by Gaspar, Lamprecht amd Niederhauser
import os
import numpy as np
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
from scipy import stats
import seaborn as sns
import random
import glob
import sweetviz as sv
import plotly.express as px
pd.options.display.float_format = '{:,}'.format
#pd.set_option('display.max_rows', 50)
data = [] # pd.concat takes a list of dataframes as an agrument
globbed_files = glob.glob("./measurements/jakov/**/*.csv", recursive=True) #creates a list of all csv files
for csv in globbed_files:
frame = pd.read_csv(csv)
frame['measured'] = os.path.basename(csv)
frame['by'] = 'Jakov'
full_folder_path = os.path.dirname(csv)
frame['device'] = os.path.basename(full_folder_path)
data.append(frame)
globbed_files1 = glob.glob("./measurements/johannes/**/*.csv", recursive=True) #creates a list of all csv files
for csv in globbed_files1:
frame = pd.read_csv(csv)
frame['measured'] = os.path.basename(csv)
frame['by'] = 'Johannes'
full_folder_path = os.path.dirname(csv)
frame['device'] = os.path.basename(full_folder_path)
data.append(frame)
globbed_files2 = glob.glob("./measurements/patrick/**/*.csv", recursive=True) #creates a list of all csv files
for csv in globbed_files2:
frame = pd.read_csv(csv)
frame['measured'] = os.path.basename(csv)
frame['by'] = 'Patrick'
full_folder_path = os.path.dirname(csv)
frame['device'] = os.path.basename(full_folder_path)
data.append(frame)
df_measurements = pd.concat(data, ignore_index=True)
# removing .csv at the end of column measured
df_measurements['measured'] = df_measurements['measured'].str[:-4]
# splitting column measured and adding 2 new columns for it in our dataframe
new = df_measurements['measured'].str.split("_", n = -1, expand = True)
df_measurements['measured_model']= new[0]
df_measurements['measured_compiler']= new[1]
# Dropping old column measured
#df_measurements.drop(columns =["measured"], inplace = True)
#df_measurements.to_csv("df_measurements.csv")
df_measurements
| function | bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | measured | by | device | measured_model | measured_compiler | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | copy | 149,685,581,073.74344 | 0.0035866575 | 0.0035848686667293 | 0.0035884463332707 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang |
| 1 | mul | 149,582,498,172.5372 | 0.0035891292 | 0.0035872047867738 | 0.0035910536132261 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang |
| 2 | add | 154,908,663,954.01996 | 0.0051985883 | 0.0051965099591248 | 0.0052006666408751 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang |
| 3 | triad | 154,936,563,089.00394 | 0.0051976521999999 | 0.005195512591663 | 0.0051997918083369 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang |
| 4 | dot | 164,840,477,263.13992 | 0.0032569119 | 0.0032531867913816 | 0.0032606370086183 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 400 | copy | 34,856,444,373.430725 | 0.0154023429999999 | 0.015315401942844 | 0.0154892840571559 | ocl-stream_gcc | Patrick | Intel i7-9850H | ocl-stream | gcc |
| 401 | mul | 34,994,602,039.49604 | 0.015341535 | 0.0152452606236817 | 0.0154378093763182 | ocl-stream_gcc | Patrick | Intel i7-9850H | ocl-stream | gcc |
| 402 | add | 32,824,889,262.2211 | 0.024533407 | 0.0244210518921726 | 0.0246457621078273 | ocl-stream_gcc | Patrick | Intel i7-9850H | ocl-stream | gcc |
| 403 | triad | 32,890,703,093.35985 | 0.0244843159999999 | 0.0243509745314563 | 0.0246176574685436 | ocl-stream_gcc | Patrick | Intel i7-9850H | ocl-stream | gcc |
| 404 | dot | 30,629,107,226.96685 | 0.017528128 | 0.0174120587504723 | 0.0176441972495276 | ocl-stream_gcc | Patrick | Intel i7-9850H | ocl-stream | gcc |
405 rows × 10 columns
df_max_bandwidth = pd.read_csv(os.path.join('./','max_mem_bandwidth.csv'), delimiter=',')
df_max_bandwidth
| device | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | |
|---|---|---|---|---|---|
| 0 | Intel i5-6600K | NaN | 64.0 | 2.0 | 25,600.0 |
| 1 | NVIDIA Geforce GTX 1060 6GB | NaN | NaN | NaN | 192,000.0 |
| 2 | LCC2 | NaN | NaN | NaN | NaN |
| 3 | Intel i7-7500U | NaN | 64.0 | 2.0 | 29,872.0 |
| 4 | Intel i7-2670QM | NaN | 64.0 | 2.0 | 21,328.0 |
| 5 | BROADCOM BCM2837 | NaN | 64.0 | 1.0 | 6,400.0 |
| 6 | Intel i7-9850H | 2,667.0 | 8.0 | 2.0 | 42,627.0 |
| 7 | Dell Latitude E5440 | 1,600.0 | 8.0 | 1.0 | 12,800.0 |
df_measurements = df_measurements.merge(df_max_bandwidth, on='device', how='left')
df_measurements.loc[df_measurements['device']=='Intel i5-6600K']
| function | bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | measured | by | device | measured_model | measured_compiler | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10 | copy | 14,478,756,795.05535 | 0.037079904 | 0.0370632565885836 | 0.0370965514114163 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 11 | mul | 14,504,010,972.099382 | 0.0370153409999999 | 0.0370020602472784 | 0.0370286217527215 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 12 | add | 16,217,595,107.75029 | 0.049656337 | 0.0495745470107336 | 0.0497381269892663 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 13 | triad | 16,241,452,113.496778 | 0.049583397 | 0.0495531485644342 | 0.0496136454355658 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 14 | dot | 21,512,173,007.471764 | 0.02495661 | 0.0248947036473953 | 0.0250185163526046 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 15 | copy | 14,465,231,690.38664 | 0.037114574 | 0.0370182806612784 | 0.0372108673387215 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 16 | mul | 14,479,229,675.112871 | 0.037078693 | 0.0369704470624992 | 0.0371869389375007 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 17 | add | 16,266,258,919.305206 | 0.04950778 | 0.0493776298939022 | 0.0496379301060977 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 18 | triad | 16,247,869,877.320974 | 0.049563812 | 0.0493962404980959 | 0.049731383501904 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 19 | dot | 21,804,296,787.95031 | 0.024622253 | 0.0245423889490051 | 0.0247021170509949 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 20 | copy | 14,420,910,050.360954 | 0.037228643 | 0.0372054983772111 | 0.0372517876227888 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 21 | mul | 14,340,461,864.81888 | 0.0374374909999999 | 0.0373137715881308 | 0.0375612104118691 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 22 | add | 15,990,701,360.555077 | 0.050360916 | 0.0502598522481941 | 0.0504619797518058 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 23 | triad | 16,011,445,279.4843 | 0.0502956699999999 | 0.0502549469621336 | 0.0503363930378663 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 24 | dot | 20,784,541,131.327984 | 0.0258302989999999 | 0.0257473246733794 | 0.0259132733266205 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 25 | copy | 14,446,387,530.690144 | 0.037162987 | 0.0371378735430432 | 0.0371881004569567 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 26 | mul | 14,485,436,598.767958 | 0.037062805 | 0.0370470334526278 | 0.0370785765473721 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 27 | add | 16,171,034,334.189882 | 0.049799311 | 0.0497611920882151 | 0.0498374299117848 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 28 | triad | 16,154,331,886.348867 | 0.0498507999999999 | 0.0497277242401085 | 0.0499738757598914 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 29 | dot | 21,793,257,769.266754 | 0.024634725 | 0.0246037104818044 | 0.0246657395181955 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 30 | copy | 14,427,865,364.30278 | 0.037210696 | 0.0371792730169298 | 0.0372421189830701 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 31 | mul | 14,371,136,932.019234 | 0.037357581 | 0.0373307214342056 | 0.0373844405657943 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 32 | add | 16,005,784,217.698092 | 0.0503134589999999 | 0.0502631883073606 | 0.0503637296926393 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 33 | triad | 16,010,762,137.266554 | 0.050297816 | 0.0502288210414384 | 0.0503668109585615 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 34 | dot | 21,092,069,415.800915 | 0.025453686 | 0.0254244039969093 | 0.0254829680030907 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 |
| 35 | copy | 14,351,153,117.0835 | 0.037409601 | 0.0371664874333817 | 0.0376527145666182 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 36 | mul | 14,305,256,881.870176 | 0.0375296239999999 | 0.0373314086875796 | 0.0377278393124203 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 37 | add | 15,991,122,723.420158 | 0.050359589 | 0.0503127140526693 | 0.0504064639473307 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 38 | triad | 15,993,829,246.95518 | 0.050351067 | 0.0502809528574285 | 0.0504211811425715 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 39 | dot | 21,079,463,320.53184 | 0.025468908 | 0.025361744926028 | 0.0255760710739719 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 40 | copy | 14,390,943,866.541737 | 0.0373061639999999 | 0.0372656772035802 | 0.0373466507964197 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 41 | mul | 14,346,300,403.329515 | 0.037422255 | 0.0373897380222038 | 0.0374547719777961 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 42 | add | 15,999,465,960.208311 | 0.050333328 | 0.050281532015792 | 0.0503851239842079 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 43 | triad | 16,010,924,800.046446 | 0.0502973049999999 | 0.0502606107572322 | 0.0503339992427677 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 44 | dot | 21,266,221,650.79661 | 0.025245242 | 0.0252111167403107 | 0.0252793672596892 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 45 | copy | 14,424,120,434.954449 | 0.037220357 | 0.0369329762367945 | 0.0375077377632054 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 46 | mul | 14,496,062,981.070444 | 0.037035636 | 0.0369460286199531 | 0.0371252433800468 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 47 | add | 16,223,932,579.244411 | 0.0496369399999999 | 0.0493482532870765 | 0.0499256267129234 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 48 | triad | 16,282,145,493.861383 | 0.049459475 | 0.0493699170373654 | 0.0495490329626346 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 49 | dot | 21,798,882,979.172634 | 0.024628368 | 0.0244246272171212 | 0.0248321087828787 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 50 | copy | 14,111,079,266.665646 | 0.0380460559999999 | 0.0379046982160906 | 0.0381874137839093 | acc-stream_gcc | Jakov | Intel i5-6600K | acc-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 51 | mul | 14,202,855,650.877483 | 0.037800209 | 0.0376571025057901 | 0.0379433154942098 | acc-stream_gcc | Jakov | Intel i5-6600K | acc-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 52 | add | 16,331,078,825.41596 | 0.049311278 | 0.0491615801062171 | 0.0494609758937828 | acc-stream_gcc | Jakov | Intel i5-6600K | acc-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 53 | triad | 16,220,326,569.210527 | 0.049647975 | 0.0494910832043516 | 0.0498048667956483 | acc-stream_gcc | Jakov | Intel i5-6600K | acc-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
| 54 | dot | 12,893,198,403.308558 | 0.041639855 | 0.0414873099714205 | 0.0417924000285794 | acc-stream_gcc | Jakov | Intel i5-6600K | acc-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 |
df_measurements['percent of max bandwidth'] = ((df_measurements['bandwidth [B/s]']/(1000*1000)) / df_measurements['device max memory bandwidth [MB/s]'])
df_measurements.loc[df_measurements['device']=='Intel i5-6600K']
df_measurements.head(50)
| function | bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | measured | by | device | measured_model | measured_compiler | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | percent of max bandwidth | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | copy | 149,685,581,073.74344 | 0.0035866575 | 0.0035848686667293 | 0.0035884463332707 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang | NaN | NaN | NaN | 192,000.0 | 0.7796124014257471 |
| 1 | mul | 149,582,498,172.5372 | 0.0035891292 | 0.0035872047867738 | 0.0035910536132261 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang | NaN | NaN | NaN | 192,000.0 | 0.7790755113152978 |
| 2 | add | 154,908,663,954.01996 | 0.0051985883 | 0.0051965099591248 | 0.0052006666408751 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang | NaN | NaN | NaN | 192,000.0 | 0.806815958093854 |
| 3 | triad | 154,936,563,089.00394 | 0.0051976521999999 | 0.005195512591663 | 0.0051997918083369 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang | NaN | NaN | NaN | 192,000.0 | 0.8069612660885621 |
| 4 | dot | 164,840,477,263.13992 | 0.0032569119 | 0.0032531867913816 | 0.0032606370086183 | ocl-stream_clang | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | clang | NaN | NaN | NaN | 192,000.0 | 0.8585441524121871 |
| 5 | copy | 149,413,208,153.0319 | 0.0035931958 | 0.0035860294380306 | 0.0036003621619693 | ocl-stream_gcc | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | gcc | NaN | NaN | NaN | 192,000.0 | 0.7781937924637077 |
| 6 | mul | 149,010,325,762.15875 | 0.0036029108 | 0.003591091392952 | 0.0036147302070479 | ocl-stream_gcc | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | gcc | NaN | NaN | NaN | 192,000.0 | 0.7760954466779102 |
| 7 | add | 153,945,885,533.87137 | 0.0052311002999999 | 0.0052111886030155 | 0.0052510119969844 | ocl-stream_gcc | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | gcc | NaN | NaN | NaN | 192,000.0 | 0.80180148715558 |
| 8 | triad | 153,997,930,596.265 | 0.0052293324 | 0.0052101600045685 | 0.0052485047954314 | ocl-stream_gcc | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | gcc | NaN | NaN | NaN | 192,000.0 | 0.8020725551888802 |
| 9 | dot | 163,529,270,431.6968 | 0.0032830264 | 0.0032646754256609 | 0.003301377374339 | ocl-stream_gcc | Jakov | NVIDIA Geforce GTX 1060 6GB | ocl-stream | gcc | NaN | NaN | NaN | 192,000.0 | 0.8517149501650876 |
| 10 | copy | 14,478,756,795.05535 | 0.037079904 | 0.0370632565885836 | 0.0370965514114163 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5655764373068496 |
| 11 | mul | 14,504,010,972.099382 | 0.0370153409999999 | 0.0370020602472784 | 0.0370286217527215 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5665629285976321 |
| 12 | add | 16,217,595,107.75029 | 0.049656337 | 0.0495745470107336 | 0.0497381269892663 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6334998088964957 |
| 13 | triad | 16,241,452,113.496778 | 0.049583397 | 0.0495531485644342 | 0.0496136454355658 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6344317231834679 |
| 14 | dot | 21,512,173,007.471764 | 0.02495661 | 0.0248947036473953 | 0.0250185163526046 | omp-stream_clang | Jakov | Intel i5-6600K | omp-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.8403192581043658 |
| 15 | copy | 14,465,231,690.38664 | 0.037114574 | 0.0370182806612784 | 0.0372108673387215 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5650481129057282 |
| 16 | mul | 14,479,229,675.112871 | 0.037078693 | 0.0369704470624992 | 0.0371869389375007 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5655949091840965 |
| 17 | add | 16,266,258,919.305206 | 0.04950778 | 0.0493776298939022 | 0.0496379301060977 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6354007390353597 |
| 18 | triad | 16,247,869,877.320974 | 0.049563812 | 0.0493962404980959 | 0.049731383501904 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6346824170828506 |
| 19 | dot | 21,804,296,787.95031 | 0.024622253 | 0.0245423889490051 | 0.0247021170509949 | raja-stream_clang | Jakov | Intel i5-6600K | raja-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.851730343279309 |
| 20 | copy | 14,420,910,050.360954 | 0.037228643 | 0.0372054983772111 | 0.0372517876227888 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5633167988422247 |
| 21 | mul | 14,340,461,864.81888 | 0.0374374909999999 | 0.0373137715881308 | 0.0375612104118691 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5601742915944875 |
| 22 | add | 15,990,701,360.555077 | 0.050360916 | 0.0502598522481941 | 0.0504619797518058 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6246367718966827 |
| 23 | triad | 16,011,445,279.4843 | 0.0502956699999999 | 0.0502549469621336 | 0.0503363930378663 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6254470812298555 |
| 24 | dot | 20,784,541,131.327984 | 0.0258302989999999 | 0.0257473246733794 | 0.0259132733266205 | kokkos-stream_clang | Jakov | Intel i5-6600K | kokkos-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.8118961379424994 |
| 25 | copy | 14,446,387,530.690144 | 0.037162987 | 0.0371378735430432 | 0.0371881004569567 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5643120129175837 |
| 26 | mul | 14,485,436,598.767958 | 0.037062805 | 0.0370470334526278 | 0.0370785765473721 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5658373671393734 |
| 27 | add | 16,171,034,334.189882 | 0.049799311 | 0.0497611920882151 | 0.0498374299117848 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6316810286792923 |
| 28 | triad | 16,154,331,886.348867 | 0.0498507999999999 | 0.0497277242401085 | 0.0499738757598914 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6310285893105027 |
| 29 | dot | 21,793,257,769.266754 | 0.024634725 | 0.0246037104818044 | 0.0246657395181955 | omp-stream_gcc | Jakov | Intel i5-6600K | omp-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.8512991316119826 |
| 30 | copy | 14,427,865,364.30278 | 0.037210696 | 0.0371792730169298 | 0.0372421189830701 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5635884907930774 |
| 31 | mul | 14,371,136,932.019234 | 0.037357581 | 0.0373307214342056 | 0.0373844405657943 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.5613725364070014 |
| 32 | add | 16,005,784,217.698092 | 0.0503134589999999 | 0.0502631883073606 | 0.0503637296926393 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6252259460038317 |
| 33 | triad | 16,010,762,137.266554 | 0.050297816 | 0.0502288210414384 | 0.0503668109585615 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.6254203959869747 |
| 34 | dot | 21,092,069,415.800915 | 0.025453686 | 0.0254244039969093 | 0.0254829680030907 | tbb-stream_clang | Jakov | Intel i5-6600K | tbb-stream | clang | NaN | 64.0 | 2.0 | 25,600.0 | 0.8239089615547232 |
| 35 | copy | 14,351,153,117.0835 | 0.037409601 | 0.0371664874333817 | 0.0376527145666182 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5605919186360743 |
| 36 | mul | 14,305,256,881.870176 | 0.0375296239999999 | 0.0373314086875796 | 0.0377278393124203 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5587990969480537 |
| 37 | add | 15,991,122,723.420158 | 0.050359589 | 0.0503127140526693 | 0.0504064639473307 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6246532313836 |
| 38 | triad | 15,993,829,246.95518 | 0.050351067 | 0.0502809528574285 | 0.0504211811425715 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6247589549591868 |
| 39 | dot | 21,079,463,320.53184 | 0.025468908 | 0.025361744926028 | 0.0255760710739719 | kokkos-stream_gcc | Jakov | Intel i5-6600K | kokkos-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.8234165359582751 |
| 40 | copy | 14,390,943,866.541737 | 0.0373061639999999 | 0.0372656772035802 | 0.0373466507964197 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5621462447867865 |
| 41 | mul | 14,346,300,403.329515 | 0.037422255 | 0.0373897380222038 | 0.0374547719777961 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5604023595050591 |
| 42 | add | 15,999,465,960.208311 | 0.050333328 | 0.050281532015792 | 0.0503851239842079 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6249791390706371 |
| 43 | triad | 16,010,924,800.046446 | 0.0502973049999999 | 0.0502606107572322 | 0.0503339992427677 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6254267500018142 |
| 44 | dot | 21,266,221,650.79661 | 0.025245242 | 0.0252111167403107 | 0.0252793672596892 | tbb-stream_gcc | Jakov | Intel i5-6600K | tbb-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.8307117832342427 |
| 45 | copy | 14,424,120,434.954449 | 0.037220357 | 0.0369329762367945 | 0.0375077377632054 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5634422044904082 |
| 46 | mul | 14,496,062,981.070444 | 0.037035636 | 0.0369460286199531 | 0.0371252433800468 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.5662524601980643 |
| 47 | add | 16,223,932,579.244411 | 0.0496369399999999 | 0.0493482532870765 | 0.0499256267129234 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6337473663767348 |
| 48 | triad | 16,282,145,493.861383 | 0.049459475 | 0.0493699170373654 | 0.0495490329626346 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.6360213083539603 |
| 49 | dot | 21,798,882,979.172634 | 0.024628368 | 0.0244246272171212 | 0.0248321087828787 | raja-stream_gcc | Jakov | Intel i5-6600K | raja-stream | gcc | NaN | 64.0 | 2.0 | 25,600.0 | 0.851518866373931 |
my_report = sv.analyze(df_measurements)
#my_report.show_notebook()
| | [ 0%] 00:00 -> (? left)
df_measurements.groupby(["measured"]).mean().sort_values(by='bandwidth [B/s]', ascending=False)
| bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | percent of max bandwidth | |
|---|---|---|---|---|---|---|---|---|---|
| measured | |||||||||
| ocl-stream_clang | 70,745,480,918.08618 | 0.016760972139999976 | 0.016714408867422932 | 0.016807535412576978 | 2,667.0 | 36.0 | 2.0 | 88,166.33333333333 | 0.7988119800494423 |
| ocl-stream_gcc | 70,474,343,310.62672 | 0.016771498979999976 | 0.016719020130992645 | 0.016823977829007252 | 2,667.0 | 36.0 | 2.0 | 88,166.33333333333 | 0.7973396256043055 |
| kokkos-stream_gcc | 13,073,831,297.186052 | 0.05326207963333331 | 0.053117813062414775 | 0.053406346204251796 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5468884640964239 |
| kokkos-stream_clang | 12,853,061,472.331564 | 0.05358152289999997 | 0.05341230108918114 | 0.05375074471081876 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5403027258125804 |
| raja-stream_clang | 12,763,367,169.404928 | 0.05374383943333332 | 0.0533705175054174 | 0.05411716136124916 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5374904098065756 |
| tbb-stream_clang | 12,726,600,863.189333 | 0.05412013143333331 | 0.05396017837414821 | 0.05428008449251836 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5349970237503847 |
| tbb-stream_gcc | 12,726,527,744.66404 | 0.05407821779999997 | 0.05391181473986825 | 0.054244620860131626 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.534910972542494 |
| raja-stream_gcc | 12,563,706,333.56919 | 0.05410318039999998 | 0.05364369620552138 | 0.05456266459447851 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5310591903825421 |
| omp-stream_gcc | 12,332,993,038.098278 | 0.05438685149999999 | 0.05394096463310723 | 0.054832738366892696 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5252573989104828 |
| omp-stream_clang | 12,259,609,990.322798 | 0.05468438496666664 | 0.05416307819188189 | 0.0552056917414514 | 2,667.0 | 52.8 | 1.8 | 25,165.4 | 0.5208703163875132 |
| acc-stream_gcc | 9,662,558,653.908764 | 0.07597938223999999 | 0.07580265140786493 | 0.07615611307213496 | NaN | 64.0 | 1.75 | 20,800.0 | 0.5026172499544456 |
| sycl-stream_clang | 9,148,552,526.212866 | 0.09344108959999996 | 0.0918057501865082 | 0.0950764290134917 | 2,667.0 | 50.0 | 1.75 | 25,056.75 | 0.39844341096361335 |
| sycl-stream_gcc | 9,129,858,862.440008 | 0.09394200843999995 | 0.09207297404270641 | 0.09581104283729346 | 2,667.0 | 50.0 | 1.75 | 25,056.75 | 0.39654292202850283 |
| std-stream_gcc | 8,307,389,739.532463 | 0.08375440839999994 | 0.08352860552191763 | 0.08398021127808228 | NaN | 64.0 | 1.6666666666666667 | 19,200.0 | 0.4773812126954468 |
| std20-stream_gcc | 8,247,869,331.395006 | 0.08442438890000001 | 0.08416358298591879 | 0.08468519481408113 | NaN | 64.0 | 1.6666666666666667 | 19,200.0 | 0.47119522835882877 |
| std-stream_clang | 8,041,950,419.660991 | 0.08717490884999997 | 0.08703016057000626 | 0.08731965712999366 | NaN | 64.0 | 1.6666666666666667 | 19,200.0 | 0.45808414693431854 |
df_measurements.groupby(["device"]).mean().sort_values(by='bandwidth [B/s]', ascending=False)
| bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | percent of max bandwidth | |
|---|---|---|---|---|---|---|---|---|---|
| device | |||||||||
| NVIDIA Geforce GTX 1060 6GB | 154,385,040,402.94684 | 0.00417685047999998 | 0.004168042765989999 | 0.00418565819400991 | NaN | NaN | NaN | 192,000.0 | 0.8040887520986815 |
| Intel i7-9850H | 21,885,307,649.333332 | 0.03388144631666663 | 0.03290997098400207 | 0.03485292164933117 | 2,667.0 | 8.0 | 2.0 | 42,627.0 | 0.513414212807219 |
| Intel i7-7500U | 17,836,637,413.732555 | 0.03771627312499999 | 0.03757636307013888 | 0.037856183179861044 | NaN | 64.0 | 2.0 | 29,872.0 | 0.5971022165818345 |
| Intel i5-6600K | 16,298,697,021.6314 | 0.04028055151111109 | 0.0401880799482952 | 0.04037302307392693 | NaN | 64.0 | 2.0 | 25,600.0 | 0.6366678524074765 |
| Intel i7-2670QM | 12,296,850,545.36677 | 0.05665529374285711 | 0.05585108190128722 | 0.057459505584426966 | NaN | 64.0 | 2.0 | 21,328.0 | 0.5765590090663342 |
| LCC2 | 4,682,519,459.321753 | 0.1556495567857143 | 0.15508814685496236 | 0.1562109667164661 | NaN | NaN | NaN | NaN | NaN |
| BROADCOM BCM2837 | 2,026,565,988.282948 | 0.04838582785714282 | 0.048242805408348535 | 0.048528850305937093 | NaN | 64.0 | 1.0 | 6,400.0 | 0.3166509356692104 |
df_measurements.groupby(["function"]).mean().sort_values(by='bandwidth [B/s]', ascending=False)
| bandwidth [B/s] | avg. execution time [s] | CI start [s] | CI end [s] | device data rate [MT/s] | device memory width [byte] | device memory channels | device max memory bandwidth [MB/s] | percent of max bandwidth | |
|---|---|---|---|---|---|---|---|---|---|
| function | |||||||||
| dot | 16,795,848,273.659794 | 0.0660093719296296 | 0.06499076158632504 | 0.06702798227293419 | 2,667.0 | 53.66153846153846 | 1.7846153846153847 | 29,732.358208955226 | 0.570234370068661 |
| add | 15,873,693,273.417736 | 0.07173441545185184 | 0.07140908151665358 | 0.07205974938705001 | 2,667.0 | 53.66153846153846 | 1.7846153846153847 | 29,732.358208955226 | 0.5370048922922415 |
| triad | 15,822,686,858.696 | 0.07186183000740737 | 0.07150396444457621 | 0.0722196955702385 | 2,667.0 | 53.66153846153846 | 1.7846153846153847 | 29,732.358208955226 | 0.5356195209236811 |
| mul | 14,945,654,242.751339 | 0.05057479766666662 | 0.050329291501108 | 0.050820303832225286 | 2,667.0 | 53.66153846153846 | 1.7846153846153847 | 29,732.358208955226 | 0.5047908750383547 |
| copy | 14,929,484,531.345362 | 0.05034957801604934 | 0.05008287282178514 | 0.05061628321031355 | 2,667.0 | 53.66153846153846 | 1.7846153846153847 | 29,732.358208955226 | 0.5059125372858865 |
from matplotlib import cm
fig, ax = plt.subplots(figsize=(9,6))
#colors = ['b','r','c','y']
labels_cat = df_measurements['device'].unique()
nrof_labels = len(labels_cat)
colors = cm.rainbow(np.linspace(0, 1, nrof_labels)) # create a bunch of colors
for i, r in df_measurements.iterrows():
#print(int(np.where(devices == r['device'])[0]))
ax.plot(r['measured'], r['bandwidth [B/s]'], 'o', markersize=3, color=colors[int(np.where(labels_cat == r['device'])[0])], linewidth=0.1, label=r['device'])
#Limit Y-AXIS Range
#ax.set_ylim(0, 40000000000)
plt.scatter(x=df_measurements['measured'], y=df_measurements['bandwidth [B/s]'])
plt.xticks(rotation=90)
plt.title("Bandwith [B/s] per measurement by device")
handles, labels = plt.gca().get_legend_handles_labels()
by_label = dict(zip(labels, handles))
plt.legend(by_label.values(), by_label.keys(), loc='best')
plt.show()
# Plot absolute bamdwith valies per measurement by device
fig = px.scatter(df_measurements, x='measured', y='bandwidth [B/s]', color='device', hover_data=['function'], height=600, title = "Bandwith per measurement by device").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot relative bamdwith valies per measurement by device
fig = px.scatter(df_measurements, x='measured', y='percent of max bandwidth', color='device', hover_data=['function'], height=600, title = "Bandwith per measurement by device").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot absolute bamdwith values per measurement by compiler
fig = px.scatter(df_measurements, x=['measured_model', 'measured_compiler'], y='bandwidth [B/s]', color='measured_compiler', hover_data=['function'], height=600, title = "Bandwith per measurement by compiler").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot relative bamdwith values per measurement by compiler
fig = px.scatter(df_measurements, x='measured_model', y='percent of max bandwidth', color='measured_compiler', hover_data=['function'], height=600, title = "Bandwith per measurement by compiler").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot absolute bamdwith values per function by device
fig = px.box(df_measurements, x="function", y="bandwidth [B/s]", color='device', hover_data=['device', 'measured'], height=600, title = "Bandwith per function by device").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot relative bamdwith values per function by device
fig = px.box(df_measurements, x="function", y='percent of max bandwidth', color='device', hover_data=['device', 'measured'], height=600, title = "Bandwith per function by device").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Violin Plot absolute bamdwith values per function by device
fig = px.violin(df_measurements, x="function", y="bandwidth [B/s]", color='device', hover_data=['device', 'measured'], height=600, title = "Bandwith per function by device", box=True, points='all').update(layout=dict(title=dict(x=0.5)))
fig.show()
# Violin Plot relative bamdwith values per function by device
fig = px.violin(df_measurements, x="function", y='percent of max bandwidth', color='device', hover_data=['device', 'measured'], height=600, title = "Bandwith per function by device", box=True, points='all').update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot absolute bamdwith values per device by function
fig = px.bar(df_measurements, x="device", y="bandwidth [B/s]", color="function", height=600, title = "Bandwith per device by function").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Plot relative bamdwith values per device by function
fig = px.bar(df_measurements, x="device", y="percent of max bandwidth", color="function", height=600, title = "Bandwith per device by function").update(layout=dict(title=dict(x=0.5)))
fig.show()
# Define pivot table for absolute bandwidth
pivot = pd.pivot_table(df_measurements, values=['bandwidth [B/s]'],
index=['measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0,
margins=False).astype(int)
pivot = pivot.div(1024*1024).rename(columns={'bandwidth [B/s]': 'bandwidth [MB/s]'})
#Define styles for pivot table
th_props = [
('font-size', '13px'),
('text-align', 'center'),
('font-weight', 'bold'),
('color', '#6d6d6d'),
('background-color', '#f7f7f9')
]
# Set CSS properties for td elements in dataframe
td_props = [
('font-size', '14px')
]
styles = [
dict(selector="th", props=th_props),
dict(selector="td", props=td_props)
]
cm = sns.light_palette("blue", as_cmap=True)
# print absolute bandwidth as pivot table
pivot = pivot.style.format("{:,.0f}").background_gradient(cmap=cm, vmin=df_measurements['bandwidth [B/s]'].min()/(1000*1000), vmax=df_measurements['bandwidth [B/s]'].max()/(1000*1000)).set_table_styles(styles)
#pivot
#pivot.plot.barh(figsize=(10,7))
# Define pivot table for relative bandwidth - all functions
pivot1 = pd.pivot_table(df_measurements, values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0.000001,
margins=False)
# print relative bandwidth as pivot table
#pivot1 = pivot1.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
#pivot1
# Define pivot table for relative bandwidth - add
pivot_add = pd.pivot_table(df_measurements[df_measurements['function']=='add'], values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0,
margins=False)
# print relative bandwidth as pivot table
pivot_add = pivot_add.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
pivot_add
| percent of max bandwidth | |||||||
|---|---|---|---|---|---|---|---|
| device | BROADCOM BCM2837 | Intel i5-6600K | Intel i7-2670QM | Intel i7-7500U | Intel i7-9850H | NVIDIA Geforce GTX 1060 6GB | |
| function | measured | ||||||
| add | acc-stream_gcc | 0.32 | 0.64 | 0.60 | 0.59 | 0.00 | 0.00 |
| kokkos-stream_clang | 0.31 | 0.62 | 0.60 | 0.58 | 0.49 | 0.00 | |
| kokkos-stream_gcc | 0.32 | 0.62 | 0.60 | 0.58 | 0.54 | 0.00 | |
| ocl-stream_clang | 0.00 | 0.00 | 0.00 | 0.80 | 0.77 | 0.81 | |
| ocl-stream_gcc | 0.00 | 0.00 | 0.00 | 0.80 | 0.77 | 0.80 | |
| omp-stream_clang | 0.31 | 0.63 | 0.58 | 0.57 | 0.45 | 0.00 | |
| omp-stream_gcc | 0.31 | 0.63 | 0.60 | 0.56 | 0.48 | 0.00 | |
| raja-stream_clang | 0.31 | 0.64 | 0.60 | 0.57 | 0.48 | 0.00 | |
| raja-stream_gcc | 0.31 | 0.63 | 0.60 | 0.56 | 0.47 | 0.00 | |
| std-stream_clang | 0.33 | 0.00 | 0.55 | 0.59 | 0.00 | 0.00 | |
| std-stream_gcc | 0.33 | 0.00 | 0.59 | 0.59 | 0.00 | 0.00 | |
| std20-stream_gcc | 0.32 | 0.00 | 0.58 | 0.59 | 0.00 | 0.00 | |
| sycl-stream_clang | 0.31 | 0.00 | 0.59 | 0.57 | 0.44 | 0.00 | |
| sycl-stream_gcc | 0.31 | 0.00 | 0.59 | 0.57 | 0.45 | 0.00 | |
| tbb-stream_clang | 0.29 | 0.63 | 0.60 | 0.58 | 0.50 | 0.00 | |
| tbb-stream_gcc | 0.29 | 0.62 | 0.59 | 0.58 | 0.50 | 0.00 | |
# Define pivot table for relative bandwidth - copy
pivot_copy = pd.pivot_table(df_measurements[df_measurements['function']=='copy'], values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0.00000000001,
margins=False)
# print arelative bandwidth as pivot table
pivot_copy = pivot_copy.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
pivot_copy
| percent of max bandwidth | |||||||
|---|---|---|---|---|---|---|---|
| device | BROADCOM BCM2837 | Intel i5-6600K | Intel i7-2670QM | Intel i7-7500U | Intel i7-9850H | NVIDIA Geforce GTX 1060 6GB | |
| function | measured | ||||||
| copy | acc-stream_gcc | 0.38 | 0.55 | 0.53 | 0.53 | 0.00 | 0.00 |
| kokkos-stream_clang | 0.33 | 0.56 | 0.55 | 0.54 | 0.48 | 0.00 | |
| kokkos-stream_gcc | 0.33 | 0.56 | 0.55 | 0.54 | 0.49 | 0.00 | |
| ocl-stream_clang | 0.00 | 0.00 | 0.00 | 0.84 | 0.82 | 0.78 | |
| ocl-stream_gcc | 0.00 | 0.00 | 0.00 | 0.84 | 0.82 | 0.78 | |
| omp-stream_clang | 0.32 | 0.57 | 0.52 | 0.53 | 0.43 | 0.00 | |
| omp-stream_gcc | 0.33 | 0.56 | 0.54 | 0.53 | 0.42 | 0.00 | |
| raja-stream_clang | 0.32 | 0.57 | 0.54 | 0.53 | 0.46 | 0.00 | |
| raja-stream_gcc | 0.33 | 0.56 | 0.54 | 0.53 | 0.42 | 0.00 | |
| std-stream_clang | 0.38 | 0.00 | 0.46 | 0.53 | 0.00 | 0.00 | |
| std-stream_gcc | 0.38 | 0.00 | 0.53 | 0.53 | 0.00 | 0.00 | |
| std20-stream_gcc | 0.38 | 0.00 | 0.53 | 0.53 | 0.00 | 0.00 | |
| sycl-stream_clang | 0.32 | 0.00 | 0.53 | 0.53 | 0.38 | 0.00 | |
| sycl-stream_gcc | 0.32 | 0.00 | 0.52 | 0.53 | 0.39 | 0.00 | |
| tbb-stream_clang | 0.33 | 0.56 | 0.55 | 0.53 | 0.44 | 0.00 | |
| tbb-stream_gcc | 0.33 | 0.56 | 0.54 | 0.53 | 0.45 | 0.00 | |
# Define pivot table for relative bandwidth - dot
pivot_dot = pd.pivot_table(df_measurements[df_measurements['function']=='dot'], values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0,
margins=False)
# print relative bandwidth as pivot table
pivot_dot = pivot_dot.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
pivot_dot
| percent of max bandwidth | |||||||
|---|---|---|---|---|---|---|---|
| device | BROADCOM BCM2837 | Intel i5-6600K | Intel i7-2670QM | Intel i7-7500U | Intel i7-9850H | NVIDIA Geforce GTX 1060 6GB | |
| function | measured | ||||||
| dot | acc-stream_gcc | 0.31 | 0.50 | 0.60 | 0.43 | 0.00 | 0.00 |
| kokkos-stream_clang | 0.31 | 0.81 | 0.84 | 0.80 | 0.63 | 0.00 | |
| kokkos-stream_gcc | 0.32 | 0.82 | 0.84 | 0.80 | 0.67 | 0.00 | |
| ocl-stream_clang | 0.00 | 0.00 | 0.00 | 0.78 | 0.72 | 0.86 | |
| ocl-stream_gcc | 0.00 | 0.00 | 0.00 | 0.78 | 0.72 | 0.85 | |
| omp-stream_clang | 0.32 | 0.84 | 0.78 | 0.79 | 0.46 | 0.00 | |
| omp-stream_gcc | 0.32 | 0.85 | 0.81 | 0.80 | 0.45 | 0.00 | |
| raja-stream_clang | 0.32 | 0.85 | 0.82 | 0.79 | 0.60 | 0.00 | |
| raja-stream_gcc | 0.32 | 0.85 | 0.80 | 0.80 | 0.56 | 0.00 | |
| std-stream_clang | 0.22 | 0.00 | 0.53 | 0.43 | 0.00 | 0.00 | |
| std-stream_gcc | 0.31 | 0.00 | 0.53 | 0.43 | 0.00 | 0.00 | |
| std20-stream_gcc | 0.29 | 0.00 | 0.52 | 0.43 | 0.00 | 0.00 | |
| sycl-stream_clang | 0.15 | 0.00 | 0.13 | 0.24 | 0.09 | 0.00 | |
| sycl-stream_gcc | 0.14 | 0.00 | 0.12 | 0.25 | 0.09 | 0.00 | |
| tbb-stream_clang | 0.31 | 0.82 | 0.84 | 0.82 | 0.58 | 0.00 | |
| tbb-stream_gcc | 0.31 | 0.83 | 0.83 | 0.83 | 0.59 | 0.00 | |
# Define pivot table for relative bandwidth - mul
pivot_mul = pd.pivot_table(df_measurements[df_measurements['function']=='mul'], values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0,
margins=False)
# print relative bandwidth as pivot table
pivot_mul = pivot_mul.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
pivot_mul
| percent of max bandwidth | |||||||
|---|---|---|---|---|---|---|---|
| device | BROADCOM BCM2837 | Intel i5-6600K | Intel i7-2670QM | Intel i7-7500U | Intel i7-9850H | NVIDIA Geforce GTX 1060 6GB | |
| function | measured | ||||||
| mul | acc-stream_gcc | 0.29 | 0.55 | 0.54 | 0.54 | 0.00 | 0.00 |
| kokkos-stream_clang | 0.33 | 0.56 | 0.54 | 0.53 | 0.47 | 0.00 | |
| kokkos-stream_gcc | 0.33 | 0.56 | 0.54 | 0.53 | 0.49 | 0.00 | |
| ocl-stream_clang | 0.00 | 0.00 | 0.00 | 0.83 | 0.82 | 0.78 | |
| ocl-stream_gcc | 0.00 | 0.00 | 0.00 | 0.83 | 0.82 | 0.78 | |
| omp-stream_clang | 0.32 | 0.57 | 0.52 | 0.52 | 0.43 | 0.00 | |
| omp-stream_gcc | 0.32 | 0.57 | 0.54 | 0.52 | 0.43 | 0.00 | |
| raja-stream_clang | 0.32 | 0.57 | 0.54 | 0.52 | 0.45 | 0.00 | |
| raja-stream_gcc | 0.32 | 0.57 | 0.54 | 0.52 | 0.45 | 0.00 | |
| std-stream_clang | 0.38 | 0.00 | 0.46 | 0.54 | 0.00 | 0.00 | |
| std-stream_gcc | 0.37 | 0.00 | 0.53 | 0.54 | 0.00 | 0.00 | |
| std20-stream_gcc | 0.36 | 0.00 | 0.52 | 0.54 | 0.00 | 0.00 | |
| sycl-stream_clang | 0.32 | 0.00 | 0.53 | 0.52 | 0.41 | 0.00 | |
| sycl-stream_gcc | 0.32 | 0.00 | 0.52 | 0.52 | 0.41 | 0.00 | |
| tbb-stream_clang | 0.33 | 0.56 | 0.54 | 0.53 | 0.45 | 0.00 | |
| tbb-stream_gcc | 0.33 | 0.56 | 0.54 | 0.53 | 0.45 | 0.00 | |
# Define pivot table for relative bandwidth - triad
pivot_triad = pd.pivot_table(df_measurements[df_measurements['function']=='triad'], values=['percent of max bandwidth'],
index=['function', 'measured'],
columns=['device'],
aggfunc=np.mean,
dropna=True, fill_value=0,
margins=False)
# print relative bandwidth as pivot table
pivot_triad = pivot_triad.style.format("{:,.2f}").background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
pivot_triad
| percent of max bandwidth | |||||||
|---|---|---|---|---|---|---|---|
| device | BROADCOM BCM2837 | Intel i5-6600K | Intel i7-2670QM | Intel i7-7500U | Intel i7-9850H | NVIDIA Geforce GTX 1060 6GB | |
| function | measured | ||||||
| triad | acc-stream_gcc | 0.32211514790204765 | 0.6336065066097862 | 0.6033534577608518 | 0.5872559526701289 | 0.0 | 0.0 |
| kokkos-stream_clang | 0.31641881004690314 | 0.6254470812298555 | 0.6012934444379517 | 0.5823857000257849 | 0.49519762702316095 | 0.0 | |
| kokkos-stream_gcc | 0.3174145076611505 | 0.6247589549591868 | 0.5999654835364515 | 0.5824099325650841 | 0.524250971288679 | 0.0 | |
| ocl-stream_clang | 0.0 | 0.0 | 0.0 | 0.8065853659753813 | 0.7725997951553149 | 0.8069612660885621 | |
| ocl-stream_gcc | 0.0 | 0.0 | 0.0 | 0.8056532373736791 | 0.7715931942984459 | 0.8020725551888802 | |
| omp-stream_clang | 0.3161325313896842 | 0.6344317231834679 | 0.5813306665125096 | 0.5656531766678 | 0.45414464118447045 | 0.0 | |
| omp-stream_gcc | 0.31544110451290563 | 0.6310285893105027 | 0.602809132799856 | 0.5636318136243936 | 0.4388104790758984 | 0.0 | |
| raja-stream_clang | 0.3159348116790939 | 0.6346824170828506 | 0.6040322886197725 | 0.5656228062619358 | 0.511187782141665 | 0.0 | |
| raja-stream_gcc | 0.31584186486782456 | 0.6360213083539603 | 0.5958894855015177 | 0.5641995034779781 | 0.48535611663583733 | 0.0 | |
| std-stream_clang | 0.3284909158859328 | 0.0 | 0.5524426239016101 | 0.5863015809016296 | 0.0 | 0.0 | |
| std-stream_gcc | 0.33077966725788316 | 0.0 | 0.5866200591477997 | 0.5847442373171476 | 0.0 | 0.0 | |
| std20-stream_gcc | 0.3160206917202478 | 0.0 | 0.5805164491254905 | 0.5854014288981946 | 0.0 | 0.0 | |
| sycl-stream_clang | 0.31346242367942306 | 0.0 | 0.5960806207034512 | 0.5718642859005524 | 0.41047163589123237 | 0.0 | |
| sycl-stream_gcc | 0.31375037367669506 | 0.0 | 0.5880602969082666 | 0.5719025368426335 | 0.3990138584032681 | 0.0 | |
| tbb-stream_clang | 0.28698233437767356 | 0.6254203959869747 | 0.5990361357593476 | 0.5820252056415479 | 0.481795097522101 | 0.0 | |
| tbb-stream_gcc | 0.2952171003726018 | 0.6254267500018142 | 0.5923600087516316 | 0.5814800135075137 | 0.48731993912277144 | 0.0 | |
#Excel Export
writer = pd.ExcelWriter('Pivot-Tables.xlsx')
for function in pivot1.index.get_level_values(0).unique():
temp_df = pivot1.xs(function, level=0).style.background_gradient(cmap=cm, vmin=0.0, vmax=1.0).set_table_styles(styles)
temp_df.to_excel(writer, index_label=function.upper() ,sheet_name=function)
writer.save()